/**
 * 地理分析工具使用示例
 * 展示如何使用 geoAnalysisUtils 中的各种功能
 */

import { checkPointsInPolygon, checkLineClosure, generateAnalysisMessage, getDetailedReport } from './geoAnalysisUtils'
import { testPoints } from './testData'

/**
 * 示例1: 检查线是否闭合
 */
export const exampleCheckLineClosure = () => {
  // 模拟绘制的线点数据
  const linePoints = [
    { lng: 116.37, lat: 39.94 },
    { lng: 116.38, lat: 39.95 },
    { lng: 116.39, lat: 39.94 },
    { lng: 116.37, lat: 39.94 } // 首尾相同，形成闭合
  ]
  
  const result = checkLineClosure(linePoints)
  console.log('线闭合检查结果:', result)
  
  return result
}

/**
 * 示例2: 分析点是否在多边形内
 */
export const examplePointAnalysis = async () => {
  // 模拟绘制的多边形点数据
  const polygonPoints = [
    { lng: 116.37, lat: 39.94 },
    { lng: 116.38, lat: 39.95 },
    { lng: 116.39, lat: 39.94 },
    { lng: 116.37, lat: 39.94 }
  ]
  
  // 使用预设的测试点进行分析
  const result = await checkPointsInPolygon(polygonPoints, testPoints)
  console.log('点位置分析结果:', result)
  
  // 生成消息
  const message = generateAnalysisMessage(result)
  console.log('分析消息:', message)
  
  // 获取详细报告
  const report = getDetailedReport(result)
  console.log('详细报告:', report)
  
  return result
}

/**
 * 示例3: 完整的绘制完成处理流程
 */
export const exampleDrawCompleteHandler = async (drawData) => {
  // 模拟绘制完成的数据
  const mockDrawData = {
    type: 'free_line',
    data: [
      { lng: 116.37, lat: 39.94 },
      { lng: 116.38, lat: 39.95 },
      { lng: 116.39, lat: 39.94 },
      { lng: 116.37, lat: 39.94 }
    ]
  }
  
  console.log('绘制完成:', mockDrawData)
  
  // 检查是否形成闭合区域
  const closureResult = checkLineClosure(mockDrawData.data)
  
  if (closureResult.isClosed) {
    // 进行点位置分析
    const analysisResult = await checkPointsInPolygon(mockDrawData.data, testPoints)
    
    // 生成结果消息
    const message = generateAnalysisMessage(analysisResult)
    console.log('分析结果:', message)
    
    // 获取详细报告
    const report = getDetailedReport(analysisResult)
    console.log('详细报告:', report)
    
    return {
      success: true,
      closureResult,
      analysisResult,
      message,
      report
    }
  } else {
    console.log('未形成闭合区域:', closureResult.reason)
    return {
      success: false,
      closureResult,
      reason: closureResult.reason
    }
  }
}

/**
 * 示例4: 批量分析多个多边形
 */
export const exampleBatchAnalysis = async () => {
  // 模拟多个多边形数据
  const polygons = [
    {
      id: 'polygon1',
      points: [
        { lng: 116.37, lat: 39.94 },
        { lng: 116.38, lat: 39.95 },
        { lng: 116.39, lat: 39.94 },
        { lng: 116.37, lat: 39.94 }
      ]
    },
    {
      id: 'polygon2',
      points: [
        { lng: 116.40, lat: 39.93 },
        { lng: 116.41, lat: 39.94 },
        { lng: 116.42, lat: 39.93 },
        { lng: 116.40, lat: 39.93 }
      ]
    }
  ]
  
  const results = []
  
  for (const polygon of polygons) {
    // 检查每个多边形是否闭合
    const closureResult = checkLineClosure(polygon.points)
    
    if (closureResult.isClosed) {
      // 分析点位置
      const analysisResult = await checkPointsInPolygon(polygon.points, testPoints)
      results.push({
        polygonId: polygon.id,
        closureResult,
        analysisResult
      })
    } else {
      results.push({
        polygonId: polygon.id,
        closureResult,
        analysisResult: null
      })
    }
  }
  
  console.log('批量分析结果:', results)
  return results
} 